home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Graphics / Utilities / Sparkle202 Folder / Docs / README 2nd < prev    next >
Text File  |  1994-04-09  |  29KB  |  559 lines

  1. Sparkle: A new mac MPEG player.
  2. -------------------------------
  3. Documents for version 1.7
  4. This document looks best in 9 point monaco.
  5. On an MPW marks aware editor (like Alpha) this document has marks for 
  6. each section.
  7.  
  8. This document contains the following sections:
  9. INTRODUCTION
  10. LEGALITIES
  11. SAVING TO MPEG
  12. FAQs
  13. WHY DOESN'T SPARKLE DO....
  14. SMALL THINGS YOU MIGHT NOT HAVE NOTICED
  15. THE FUTURE
  16. HOW CAN YOU HELP IMPROVE SPARKLE?
  17.  
  18. ------------------------------------------------------------------------------
  19. INTRODUCTION
  20.  
  21. Hi there, friendly users. This is release 2.0 of my mac MPEG player.
  22. Version 1.0 of this code was based on the Berkeley MPEG unix code.
  23. (Anyone who wants to play with the Berkeley code can get it from 
  24. toe.cs.berkeley.edu in pub/multimedia/mpeg.) It was released as soon as 
  25. it was usable. This version has had most of the Berkeley code rewritten 
  26. for greater speed, smaller memory footprint, and more flexibility.
  27.  
  28. Version 2.0 of this code makes use of the Berkeley MPEG encoder, available 
  29. from the same place as above. Like version 1.0, this Berkeley code has not 
  30. been touched much except to make it Mac aware, object oriented, and thread 
  31. based. As a result, MPEG encoding is slow and a ridiculous memory hog 
  32. (what do you expect from UNIX coders---they seem to have no interest in 
  33. elegant design)? 
  34. As time permits I'll be going through that encoding code to make it faster 
  35. and use less memory.
  36.  
  37. Notice that there is a section of this document called FAQs.
  38. Please read it before sending me mail, thus avoiding wasting your time and 
  39. mine.
  40.  
  41. Please read all of this document before playing with the program. While 
  42. actually using the program is pretty simple, there are a few things you 
  43. should be aware of. Many of you may not care when I waffle on about 
  44. technical details. However I would ask all programmer readers (especially 
  45. people knowledgable about QuickTime, and especially Apple [and 
  46. ex-Apple :-( employees] to look at the tech sections and help me out with 
  47. comments and suggestions. Each time someone gives me a pointer on how to 
  48. do something it cuts a week or more off the release date of the next 
  49. version of Sparkle. 
  50.  
  51. Features:
  52. •    Standard mac interface with menus and windows.
  53. •    Uses the QuickTime movie controller to control the MPEG viewing.
  54. •    MultiFinder friendly, with good backgrounding behavior.
  55. •    Saves MPEGs to QuickTime movies.
  56. •    Can open multiple files at once.
  57. •    Free.
  58.  
  59. To run it needs at least:
  60. •    System 7.
  61. •    QuickTime 1.6
  62. •    A 68020 or better.
  63. •    800K to play one 160x120 MPEG---to open more or large MPEGs increase the
  64.     partition. 
  65.     Encoding MPEGs requires much more memory---about a minimum of 1600K for a 
  66.     160x120 source. 
  67. •    It does not require the Thread Manager to be installed, but runs much 
  68.     better if it's present. Right now, the Thread Manager is an extension 
  69.     that you can get from any friend who knows a lot about macs, or from the 
  70.     apple ftp site. I wish I could distribute it with Sparkle, but Apple's 
  71.     boneheaded lawyers won't allow that. 
  72.     (Question for you as a user, does it make your Macintosh expereince 
  73.     better or worse to find that a vital piece you need to run a program is 
  74.     not available with that program? Now try to explain that to Apple 
  75.     management, who sometime seem determined to make using a mac as difficult 
  76.     an experienc as using a PC.)
  77.     The Thread Manager may be built into System 7.5 when that's released, at 
  78.     which point you won't need the extension.
  79.     
  80. This program works fine, with good handling of errors, on my Quadra 610, but 
  81. that's the only machine I have to test it. If you find a bug that is not 
  82. caused by the various things listed below, please mail me with as many 
  83. details as possible, both about your machine and about what the  program 
  84. was last doing before it died on you.
  85.  
  86. I don't think there's much to say on the use of this program---you pretty 
  87. much run it like any other mac program. There is a section in this 
  88. document on tips that may not be obvious. 
  89. When opening files, you can choose to show all files, or only files with a 
  90. .mpg suffix.
  91. If you choose the "show all files" option and open some random file, don't 
  92. be surprised when you are told that that is not a valid MPEG file.
  93. If you set the option to change file types, the file type of the MPEG file 
  94. you are changing will be changed to a Sparkle file, which will give it a 
  95. nice icon and allow you to open the file by double-clicking on it.
  96.  
  97. Underneath the movie controller for each window is a progress bar which 
  98. will update itself when slow things are happening. If you have a fast 
  99. machine (say a Quadra or Centris) this won't have to update itself much, 
  100. except if you open large (and not too common) MPEGs---say 320x240. If you 
  101. really want to see what the progress update looks like, try having lots of 
  102. MPEGs playing at once, then switch Sparkle into the background. 
  103. If you save an MPEG to QuickTime using Cinepak, your machine may appear to 
  104. freeze while each frame is being converted. I have installed code to 
  105. reduce the extent of the freeze, but basically this is a bug with 
  106. QuickTime---the system just grabs control and won't let go for about five 
  107. seconds. Maybe this'll be fixed in QuickTime 2.0 if we're lucky.
  108.  
  109. I have tested this program extensively under low-memory conditions when it 
  110. opens files and plays them.  It should never crash under those conditions.  
  111. In 600K you can easily open, play and save to QT a 120x160 I-frame MPEG.  In 
  112. 1500K you can open, play and save to QT a 320x240 IBP-frame MPEG.
  113.  
  114. Disk errors in various forms (bad sectors reading an MPEG file, no disk 
  115. space writing an QuickTime file, etc) will not crash, but the system will 
  116. put up an error alert and not handle the error very well (for example you 
  117. won't be given a chance to destroy old files to free up space on a disk). 
  118. Decent recovery from disk errors is on the list of things to do.
  119.  
  120. ------------------------------------------------------------------------------
  121. LEGALITIES
  122.  
  123. This program can be freely distributed.
  124. If you want to include it on a CD-ROM collection, please ask me first, 
  125. but I'll probably allow you.
  126. NOTE: Some authors will not allow their stuff to be distributed on CD-ROMs 
  127. for which people have to pay. I would ask these authors to consider things 
  128. more carefully. Many people (like myself) do not have very good ftp access 
  129. and a CD ROM of stuff is a godsend, even if we do have to pay a little for 
  130. it. Think about it.
  131. The only people I won't allow to carry it are ZiffNet because I feel their 
  132. download policies are unfair. (As I understand things, ZiffNet put up for 
  133. downloading stuff they pull off the InterNet, but won't allow the InterNet 
  134. to distribute their stuff. If I am wrong about this, someone please tell 
  135. me and I'll change this clause.)
  136.  
  137. If you feel a desperate need to thank me for this program, send me a 
  138. floppy of interesting MPEGs or QT movies you've picked up. 
  139. (Please don't e-mail me large files without warning.)
  140. My paper-mail address is 
  141.     Maynard Handley
  142.     ADI
  143.     284 Stuart Street
  144.     Dunedin
  145.     New Zealand
  146.  
  147. ------------------------------------------------------------------------------
  148. SAVING TO MPEG
  149.  
  150. The dialog box offering options when you save to MPEG is not that great 
  151. right now if you don't know what you're doing. I'm sorry---I'll fix it 
  152. when I have time, like everything else.
  153.  
  154. For a better explanation of how MPEG works, read the Technical Notes file 
  155. in this package, but here are rough details.
  156.  
  157. When encoding your MPEG you will need to decide what types of frames you 
  158. want to use. If you want your MPEG to be read widely, ie on PC systems, 
  159. you should consider using only I-frames. The most common MPEG decoder on 
  160. PCs is the Xing decoder which only understands the simple I-frame MPEG 
  161. format. If you want to get the best possible compression you should use 
  162. I, P and B frames, but then your MPEG will only be able to be read by 
  163. smarter decoders. A compromise is to use only I and P frames. This will 
  164. give you a lot of the compression benefit of I, P and B frames, but will 
  165. be faster to encode. 
  166.  
  167. If you don't want to know the details of these frames, choose a frame 
  168. pattern from the popup menu. 
  169. If you want to create your own frame pattern, here are some details:
  170. (If you don't want to create your own frame pattern, ignore these.)
  171. 1) The first frame in the MPEG will always be I. That implicit I frame is 
  172.     displayed in front of the frame pattern text you enter because it is 
  173.     always there and you don't need to put it in. That implicit I frame is 
  174.     only used for the first frame, after that your pattern is repeated as 
  175.     necessary. Thus if your pattern is BBPBBI, the encoder will encode frames 
  176.     using the sequence I BBPBBI BBPBBI BBPBBI ...
  177.     (For people who care about MPEG details, this is the playback order
  178.     of the frames. The actual order of the frames stored in the file 
  179.     will be be I PBBIBB PBBIBB PBBIBB.)
  180. 2) If you are using B frames, you have to start off with two referential 
  181.     frames, the initial I frame then either an I or a P frame.
  182. 3) The last few frames of the MPEG, if they would be B frames, will be 
  183.     converted to I-frames. (If this didn't occur, like in the original 
  184.     Berkeley encoder code before I munged it, you will lose those final 
  185.     frames.)
  186. 4) Don't create too long a pattern of Ps or Bs. You'll start to lose 
  187.     quality and random access into the movie will become more granular. The 
  188.     presets I've given should guide you as to sensible selections.
  189.  
  190. Once you have chosen a frame pattern, you'll need to select the amount of 
  191. compression you want to use. This is set by the I, P and B quantization 
  192. levels. The values the dialogs gives as defaults will usually make sense 
  193. but if you want to change them:
  194. 1) The values are restricted to the range 1 through 1024 inclusive.
  195.     A quantization of 1 is the highest quality, a quantization of 1024 is the 
  196.     lowest quality.
  197. 2) Normal quality is a quantization of about 8. Low quality is a 
  198.     quantization of about 16. High quality is about 6.
  199. 3) So why give a range all the way up to 1024?
  200.     If you must know, I foresee some users wanting to see what happens as you 
  201.     change this value. You may hope to obtain an MPEG coded using only DC 
  202.     components and with all AC as zero. However if you do this with lowish 
  203.     quantizations, like 64, you'll have unexpected results---see the Tech 
  204.     Notes for why. So really the 1024 limit is a hokey way to generate MPEGs 
  205.     with only DC components.
  206.  
  207. You can choose from various algorithms for generating P and B frames. I 
  208. haven't explored these in detail and they may change when I have time to 
  209. look at them. For now the important things to note are 
  210. 1) They all seem to generate about the same quality, and about the same 
  211.     file size.
  212. 2) They are ordered in the menus by speed, with the fastest ones first.
  213. 3) The B-frame exhaustive search will take approx forever to do anything. 
  214.     Try it once to see what I mean, but don't expect to use it for anything 
  215.     useful.
  216. As I explore these more and start diddling the code, I'll provide more 
  217. explanation.
  218.  
  219. If you save to MPEG, because of the non-causal algorithms used by MPEG 
  220. compression, frames are not compressed in the order they are displayed. 
  221. This means that if you are using B-frames and stop the compression before 
  222. it reaches the end of the source movie, the encoder may have queued up 
  223. some frames it needs to compress to make the MPEG file consistent. 
  224. If this is the case, Sparkle will have to encode those queued frame before 
  225. it stops the compression, so it won't stop immediately. 
  226. The message window will tell you how many frames have been queued so you can see 
  227. how things are going. If you have the speech manager installed, Sparkle 
  228. will also tell you how many frames are left, which you amy find more 
  229. convenient.
  230.  
  231. ------------------------------------------------------------------------------
  232. FAQs (Frequently asked questions).
  233.  
  234. • Why when I try to step back one frame do I sometimes step back 5 or six 
  235. frames?
  236.     You are viewing an MPEG with P or B frames. Because of the way these 
  237.     frames are compressed, it would take a lot of computation (ie be slow) to 
  238.     jump exactly to the frame you want, so I jump to the nearest frame that 
  239.     can be calculated at reasonable speed. If you want to know more, read the 
  240.     technical note in this package.
  241. • Why when I try to random access a frame do I get sent to the same set of 
  242. frame numbers always?
  243.     Same reason as above.
  244.  
  245. • Why does my MPEG have the occasional block of garbage, mostly colored 
  246. green?
  247.     Some part of the MPEG file has become corrupt. This usually happens with 
  248.     MPEG files that have been uuencoded and have had a character or two lost 
  249.     or changed.
  250. • Why are large parts of my MPEG filled with green garbage, or with parts 
  251. of earlier scenes.
  252.     You have probably downloaded the MPEG file using gopher or ftp in ASCII 
  253.     format. The file is now useless. Download it again using BINARY mode. 
  254.     Better still, set your gopher or ftp application always to download .MPG 
  255.     suffix files in BINARY---don't trust its AUTOMATIC mode.
  256. • Why is the first frame of my MPEG all green?
  257.     Some bozos out there (probably PC users) when they create an MPEG file, 
  258.     randomly start it where they feel like it. 
  259.     The consequence is that the first some bytes of the file are garbage and 
  260.     appear as an all green first frame. 
  261.     If you have one of these MPEGs, whenever you jump to the first frame, you 
  262.     won't see the first frame, but simply the last frame you were looking at. This 
  263.     is a consequence of the way Sparkle handles errors in the MPEG file format. 
  264.     Mostly it works well, but in this particular case it isn't great.
  265.     It is not too easy to work around this because of the many different ways in which
  266.     the MPEG can have garbage at the start before valid data begins.
  267.  
  268. • Why at the end of an MPEG is the last frame the same as the second to 
  269. last frame?
  270.     Some MPEGs just are created this way, with the last two frames as 
  271.     duplicates. This is a problem with those files, not a bug in Sparkle, and 
  272.     one just has to accept it. 
  273.     A similar type problem is that some video that's been converted to 30fps 
  274.     from 24fps film has duplicate frames every so often, and agin one just 
  275.     has to accept this for now.
  276.  
  277. • What does the Thread Manager do? Why do you make such a fuss over it?
  278.     The Thread Manager provides a way for a programmer to create a number of 
  279.     tasks within an application and have those tasks all run together. So 
  280.     with Sparkle every time the user asks for something that will takes some 
  281.     time, like playing an MPEG or saving a file in some different format, I 
  282.     create a task that does that work. If the Thread Manager isn't present, 
  283.     you, the user, can't create a number of these tasks and switch between 
  284.     them---you are restricted to doing only one thing at a time.
  285.  
  286. • When I started saving a file to MPEG, it got through two frames then sat there
  287. doing nothing for a long long time. Did it crash?
  288.     Especially when saving to MPEG, Sparkle creates a large number of blocks 
  289.     of memory. If the mac runs out of memory partway through performing 
  290.     this saving, it will run around trying everything it can to scrounge memory.
  291.     On my Quadra 610 I have seen it sit there for 45 seconds trying to free up 
  292.     memory before it concludes that there's nothing it can do and pops up an
  293.     error message. I guess on slower machines it might sit there for up to two
  294.     minutes. Just be patient and wait a while before concluding things
  295.     have crashed.
  296.  
  297. • Will you create a PowerPC native version? A version that uses the DSP in 
  298. the AV macs?
  299.     I don't have a PPC or an AV mac, and unless someone buys me one, I won't 
  300.     have either for sometime. Maybe when Symantec offer a Think C 7 that 
  301.     compiles to PowerPC, someone out there with a PowerPC will be able to 
  302.     do the compile for me. Until then, I'm afraid this is all that I can do.
  303.  
  304. • I tried to use the Movie Controller jog control on an MPEG and nothing 
  305. happened except that the pause/play button flickered a lot. Help.
  306.     The jog control on the movie controller is accessed by clicking on the 
  307.     stepper buttons with the control key down.  It is used to play movies at a 
  308.     variable rate, backwards and forwards.  However since Sparkle only plays 
  309.     MPEGs at one rate (too damn slow) it doesn't do much good.  Because MPEGs 
  310.     play so slowly, I handle the timing for them differently from the way 
  311.     QuickTime times movies, and my timing doesn't mesh with what the jog control 
  312.     wants.  The flickering is there as a direct byproduct of something I added 
  313.     to give you the most useful functionality of the jog control.  If you use 
  314.     command- left and right arrows you can play the movie forwards and 
  315.     backwards, and using them one after the other will give you a very useful 
  316.     jogging capability.
  317.  
  318. • Where can I get MPEG files?
  319.     The only site I know of is toe.cs.berkeley.edu in pub/multimedia. I don't 
  320.     have very good net access at present so I can't hunt for other sites. If 
  321.     you find other sites, tell me, and I'll add them to this list.
  322.     
  323. • Where can I find more about MPEG?
  324.     Read the UseNet MPEG FAQ. This is published in news.answers every so 
  325.     often, and can be ftp'd as         
  326.         host: ftp.cs.tu-berlin.de
  327.         file: /pub/msdos/windows3/graphics/mpegfaXX.zip
  328.     (XX is a version number).
  329.      Yeah, it's a zip file and that sucks, but that's life. There are a bunch 
  330.      of mac deZip'ers around so grab one and use it.
  331.      There's also a version of this, I seem to remember in text format, at 
  332.          toe.cs.berkeley.edu in pub/multimedia/mpeg.
  333.      The latest version of this file as of January 94 to be 3.0.
  334.  
  335. • How can I deal with AVI files?
  336.     There is a program at the sumex-aim.stanford.edu ftp site, in 
  337.     info-mac/grf/util/avi-to-qt-converter.hqx that claims to do this.
  338.     The AVI codec part of it appears to work OK, but I don't know about the 
  339.     rest of it because I have no access to AVI files. I've heard some people 
  340.     recommend it, and one guy say it crashed on his machine.
  341.  
  342. • Do I know of a program that ...?
  343.     Not really. 
  344.     I know of no Mac program that handles MPEG sound, or MPEGs with a .WAV 
  345.     file. There is source code floating around that converts MPEG sound to 
  346.     and from 16bit 44.2kHz samples, but it does not deal with MPEG 
  347.     video/audio synching and thus isn't yet of much use.
  348.     I know of no Mac program that can play windows AVI files.
  349.     My next major task is handling sound. 
  350.     But until I am done with that, I'm afraid you're out of luck.
  351.  
  352. ------------------------------------------------------------------------------
  353. WHY DOESN'T SPARKLE DO...
  354.  
  355. •    Why doesn't Sparkle tell you what rate an MPEG should play at so you 
  356.     can use that rate for the QuickTime movie?
  357. In my opinion the single stupidest thing the MPEG committee did was the 
  358. way they defined frame rates. Rather than allowing an MPEG file to be 
  359. whatever rate is wanted, like a QuickTime file, only one of eight fixed 
  360. rates is allowed. The minimum of these eight rates is 24fps. This is 
  361. clearly insane as many people don't have the hardware or the need to 
  362. display at this rate. Many MPEGs are being produced at 16 or 12fps. These
  363. MPEGs set the frame rate to a bogus value cause they can't do anything 
  364. else. In my experience, most 120x160 MPEGs work best at about 16fps.
  365.  
  366. Now some MPEGs do give a display rate that is valid. However these are 
  367. usually large MPEGs, and their frame rate is 30fps. So unless you have a 
  368. quadra with extra hardware quicktime just won't be able to play the movie 
  369. at that rate anyway. 
  370.  
  371. Because of these, for now I don't bother to point out the frame rate of 
  372. the MPEG. This will certainly change as I improve the program. Even if 
  373. you don't set that frame rate to the QT frame rate, it's interesting to 
  374. know.
  375.  
  376. Also note that some MPEGs are converted video of what was originally a 
  377. movie. Now movies run at 24fps, but video is 30 fps. So every five frames 
  378. a movie frame is doubled giving an extra video frame. This works fine 
  379. when playing at 30 fps but gives a strange jerkiness when playing at 6fps 
  380. or so. A future Sparkle enhancement will seek out these duplicate frames 
  381. and eleminate them, but for now you are stuck with them.
  382.  
  383. I know it is a pain to creat a movie at one frame rate and find it sucks, 
  384. so you have to recreate it at a second frame rate. It would be nice just 
  385. to use the movie you have but change the frame rate from say 16fps to 12 
  386. fps. This will be added to a later version of Sparkle.
  387.  
  388. •    Why doesn't Sparkle read .gl, .dl and .fli files?
  389. One reason is that those file formats are awful. They give these dinky 
  390. low contrast horribly dithered images no-one would want to look at, and 
  391. they usually only have about 10 frames. Maybe, years from now, I'll add 
  392. those conversions, but they're about as low a priority as you get.
  393.  
  394. •    What about audio?
  395. MPEG has audio compression as well as video compression. I do not really 
  396. understand how the audio compression works. That is, I have the MPEG 
  397. standard that explains the bit patterns used and such, but I don't 
  398. understand the overall ideas behind the encoding. I don't think I can do 
  399. a good job in terms of high speed, good quality, low memory usage and 
  400. such, unless I have such an understanding.
  401. Does anyone out there have any references on how the MPEG psycho-acoustic 
  402. coding works? Technical journals, books, elementary or advanced 
  403. treatments. I don't care what you suggest---anything is better than my 
  404. present zero knowledge.
  405.  
  406. •    What about Video for Windows?
  407. I would be nice to support .AVI files. But right now I know nothing about 
  408. .AVI beyond the fact that it exists. Again any info anyone has is 
  409. appreciated. Until I know how .AVI works, how it fits into the windows 
  410. environment etc, I can't even tell you if it's practical for Sparkle to 
  411. try to support .AVI, let alone start the necessary coding.
  412.  
  413. •    Why don't you write an MPEG codec?
  414. It is not yet clear to me that an MPEG codec has any particular use.
  415. As far as the MPEG algorithm goes, my code is not yet fast enough to give 
  416. real video, even on quadras. For a 120x160 movie I get 1 fps on my SE/30. 
  417. While I hope to get at least twice that as I continue to revise the code, 
  418. I don't think I can get much beyond it. The best I could ever get if I 
  419. wrote in pure assembly is 4 fps (the JPEG codec rate) which isn't really 
  420. good enough. 
  421. Next the MPEG file structure is rather different from the QuickTime file 
  422. structure in the way that different pieces of data are tagged and 
  423. synchronised. Things would not be like the JPEG codec where a program can 
  424. slap a short header onto a JPEG file, feed it to the JPEG codec and have 
  425. a usable picture. The program would still have to know a lot about the 
  426. MPEG file structure to use the codec, so the whole point of the codec as 
  427. being usable by programs that don't know the compression algorithm 
  428. details is lost.
  429. Also I suspect the way MPEG uses forward image prediction in B-frames 
  430. will cause QuickTime problems both with buffer allocation (where will the 
  431. future predictive frames be stored) and in random access.
  432.  
  433. So for now I think a separate MPEG<->QT program is most useful. Of course 
  434. when Sparkle is maxed out as an application (and when QuickTime has 
  435. evolved more) I may reconsider the issue, but it won't happen soon.
  436.  
  437. •    Why does the MPEG sometimes stop before the highest frame number?
  438. This can happen for two reasons. One is that some MPEGs (like those 
  439. produced by GC technologies) have two garbage frames at the start of the 
  440. file that cannot be decoded and are skipped by Sparkle. Right now Sparkle 
  441. isn't clever enough when it counts the nmuber of frames to notice that 
  442. these frames are garbage and should not be included in the count of total 
  443. frames. In future this smartness will be added.
  444. A second reason is that if a frame is corrupt, it may be displayed as an 
  445. image with some junk, or it may be skipped entirely because Sparkle just 
  446. can't deal with whatever error corrupted the file.
  447.  
  448. •    Will I make the source available? 
  449. Yes, at some point. I had hoped to do so this release, but while the code 
  450. is 95% clean and readable, it's still not perfect, and don't yet think 
  451. it would help anyone much.
  452.  
  453. ------------------------------------------------------------------------------
  454. SMALL THINGS YOU MIGHT NOT HAVE NOTICED
  455.  
  456. The movie controller behaves pretty much like a standard QT controller. 
  457. You can step forward and backwards, hold down those buttons to play 
  458. forwards or backwards and click or drag in the central region to go to a 
  459. random point. 
  460. You can use the forward and backward arrow keys to step. 
  461. You can option click in the forward and backward steppers to go to the 
  462. beginning or end of the MPEG. Likewise using option forward or backward 
  463. arrow.
  464. You can start the movie playing using either return, spacebar, or 
  465. command forward arrow. You can stop playing using spacebar or return.
  466. You can yet play backwards by using command backward arrow. 
  467.  
  468. The visual clue that the movie is being saved is that 
  469. the movie controller loses its steppers. This is not a particularly 
  470. obvious fact and may at some point be changed. For now it works once you 
  471. realize this fact.
  472.  
  473. When a movie is being saved, you can either stop the conversion 
  474. or pause it. To stop the conversion, use command-S (or the equivalent 
  475. menu option.) This will save the movie using the frames created so far.
  476. To pause the conversion use command-P, or the equivalent menu option, or 
  477. click on the movie controller's play/pause button. The  
  478. saving will stop until you start that movie playing again. This is 
  479. occasionally useful if you want to pause a cinepak conversion to do a 
  480. short job on your mac.
  481.  
  482. If you are partway through a movie and save, the movie will be 
  483. rewound to the beginning for you. You do not need to be at the start of a 
  484. movie to save.
  485.  
  486. You can set the temporal quality options when saving to QuickTime 
  487. separately from the spatial quality options. If you need to do this, hold 
  488. down the option key while using the quality slider, and it will become a 
  489. temporal quality slider. 
  490.  
  491. The code runs fastest on a 24bit screen because it then does not need to 
  492. dither the image to the display. The dithering adds a 15% or so slowdown 
  493. to the code. So if your screen has a 24bit mode, use it.
  494.  
  495. ------------------------------------------------------------------------------
  496. THE FUTURE
  497.  
  498. The basic outline for now is
  499.     2.5 Cleaned up faster, smaller version of 2.0.
  500.     3.0 Handles sound.
  501.     3.5 Cleaned up faster, smaller version of 3.0.
  502. While adding these large additions I'll fix small things as I go, and as 
  503. I have time. I don't see the user interface improving much for some 
  504. time---more important things need my time.
  505.  
  506. I also want to add stuff to allow us to create movies. Morphs, special 
  507. effects, that sort of thing.
  508.  
  509. ------------------------------------------------------------------------------
  510. HOW CAN YOU HELP IMPROVE SPARKLE?
  511.  
  512. •    Any info on psycho-acoustic encoding?
  513. •    Any info on MicroSoft Video for Windows?
  514. •    Assembly code for IDCT, or a way to access the JPEG codec's IDCT code.
  515. •    Why is QuickTime so slow about creating text track movies? If you have 
  516.     code that creates text track movies fast, please show it to me.
  517. •    Any bug reports.
  518. •    Any ideas you have or suggestions. Your suggestions may go onto the 
  519.     list of things to do (currently two pages of single line items) but will 
  520.     probably be acted upon at some point. People have suggested several 
  521.     things to me I would not have thought of myself, so I do want your 
  522.     feedback.
  523. •    Anything on the QT16 CD ROM beyond the technote at ftp.apple.com.
  524.     I have full docs for QT15, but already I've learned of one aspect of 1.6 
  525.     that I could make good use of. There may be others.
  526. ------------------------------------------------------------------------------
  527. THANKS
  528.  
  529.     Many people all over the internet have helped me write this code.
  530.     Thanks to the people at Berkeley. Even though I'm gradually destroying 
  531. their code as I replace it with my own, they helped get this project 
  532. started.
  533.     Thanks to the people at Stanford whose code I hope to start using real 
  534. soon now.
  535.     Thanks to various usenet personalities who answered mac programming 
  536. questions, mailed me quicktime header files and such. Special thanks to 
  537. ldo in New Zealand, and Jon W{tte in Sweden, and bryanw, keeper of the 
  538. MPEG FAQ, who mailed me about the Stanford MPEG encoder.
  539.     A special individual thank you goes to DS (he didn't want me to give his 
  540. name but he knows who he is.) DS mailed me a CD ROM and ten floppies of 
  541. information about QuickTime components after I complained that Apple was 
  542. not making this information easily available. Already that knowledge has 
  543. helped this version of Sparkle handle update events much better---no more 
  544. flashes of images. Once I add random access to the code, his help will 
  545. really come into its own.
  546.     Thanks to Apple for making the greatest computers in the world. 
  547. (Though sadly they seem to be going completely clueless with regard to 
  548. how to distribute their various new ideas. I fear if they don't get their 
  549. act together about this soon, NO-ONE will support these new things 
  550. because developers will have no idea whose machine has what on it.)
  551.     Thanks also to Symantec for creating such a great programming environment.
  552. This program was written with Think C 5, then Think C 6 using the Think 
  553. Class Library. Having coded on Windows, X-windows, and the Mac, I can 
  554. unreservedly say that the Mac is by far the most pleasant platform for a 
  555. programmer.
  556.  
  557. Maynard Handley 
  558. maynard@elwing.otago.ac.nz
  559. March 30 1994